From: Florian Müllner Date: Thu, 20 Sep 2012 19:44:21 +0000 (+0200) Subject: st-theme-node: Add method to invalidate drawing state X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5742 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c4c470c1f39bc6bf0500d80676e21161d4da146d;p=gnome-shell.git st-theme-node: Add method to invalidate drawing state StThemeNode caches its resources aggressively to keep the required work on paint to a minimum - right now, resources are only recreated on allocation changes. In order to update the background-image property correctly when the underlying file changes, resources need to be recreated without a size change, so add an explicit method for that. https://bugzilla.gnome.org/show_bug.cgi?id=679268 --- diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c index 8e5814184..c3424f9fd 100644 --- a/src/st/st-theme-node-drawing.c +++ b/src/st/st-theme-node-drawing.c @@ -2088,3 +2088,10 @@ st_theme_node_copy_cached_paint_state (StThemeNode *node, if (other->corner_material[corner_id]) node->corner_material[corner_id] = cogl_handle_ref (other->corner_material[corner_id]); } + +void +st_theme_node_invalidate_paint_state (StThemeNode *node) +{ + node->alloc_width = 0; + node->alloc_height = 0; +} diff --git a/src/st/st-theme-node.h b/src/st/st-theme-node.h index 795f875c1..2c672ebcf 100644 --- a/src/st/st-theme-node.h +++ b/src/st/st-theme-node.h @@ -244,6 +244,7 @@ void st_theme_node_paint (StThemeNode *node, void st_theme_node_copy_cached_paint_state (StThemeNode *node, StThemeNode *other); +void st_theme_node_invalidate_paint_state (StThemeNode *node); G_END_DECLS